Current computer programming techniques include the use of Object-Oriented Programming ("OOP"). Object-Oriented Programming centers on reusable, self-contained, callable program code modules known in the art as `objects`. Such a modular approach makes software development more efficient and reliable through the use and reuse of proven, tested objects.
Each object is designed to accomplish a predefined set of operations through "methods" and associated data. These methods include programmed tasks for the object to perform when called upon to do so. Each particular method is defined within a `class` associated with an object. The class acts as a template that describes the behaviour of a group of similar objects. An object is instantiated from (or is a runtime instance of) a selected class, and includes methods and attributes (or data) defined in the class.
Unfortunately, current object-oriented programming does not enable the addition or deletion of the methods and/or data of an object (defined within the associated classes) at run-time. A programmer must therefore choose the methods and data that an object will implement by defining an appropriate class, with the required methods and data, prior to initial instantiation of the object. As a result, certain methods and data may be required at run-time, but will be unavailable within the object. Thus, all possibly required methods and data are included in the class when originally defined, and the size of the object (i.e., its "footprint") instantiated therefrom becomes accordingly large.
As an example, a particular object may include a method that performs floating-point matrix calculations using a vector processing facility. However, on occasion, the vector processing facility may be unavailable, such that the object requires software emulation routines for floating-point matrix calculations. Conventional techniques require that the object include methods and data for both software emulation based floating-point matrix calculations and vector facility based floating point matrix calculations. This results in an object with a large footprint, wherein the software-emulation routines are used infrequently. System resources are therefore not efficiently utilized.
The present invention is directed toward solutions for the above noted problems.